<?php

/**
 * Permite hacer operaciones con la tabla zonatrabajo de la base de datos
 * @package simertweb 
 * @subpackage models
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Mzona_trabajo extends CI_Model {

    public function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->model('mempleado');
        $this->load->model('mpersonal_operativo');
        $this->load->model('mzona');
        $this->load->model('mhistorico');
    }

    /**
     * Se aasignan zonas de trabajo a un controlador
     * @return string
      F */
    function establecerZona() {
        if (isset($_POST['sinreceso'])) {
            $data = array(
                'fecha' => strftime("%Y-%m-%d"),
                'horarioInicio' => $_POST['desde'],
                'horarioFin' => $_POST['hasta'],
                'recesoInicio' => "00:00:00",
                'recesoFin' => "00:00:00",
                'habilitado' => 1,
                'Controlador_idControlador' => $this->mpersonal_operativo->obtener_idControlador($_POST['personal']),
                'ZonaEstacionamiento_idZona' => $this->mzona->indice($_POST['zona']),
            );
        } else {
            $data = array(
                'fecha' => strftime("%Y-%m-%d"),
                'horarioInicio' => $_POST['desde'],
                'horarioFin' => $_POST['hasta'],
                'recesoInicio' => $_POST['receso1'],
                'recesoFin' => $_POST['receso2'],
                'habilitado' => 1,
                'Controlador_idControlador' => $this->mpersonal_operativo->obtener_idControlador($_POST['personal']),
                'ZonaEstacionamiento_idZona' => $this->mzona->indice($_POST['zona']),
            );
        }
        $this->db->insert('historicozonastrabajo', $data);
        $this->db->insert('zonatrabajo', $data); //guarda los datos en la bd
        $id = mysql_insert_id();
        $this->mhistorico->guardar_acceso($id, "Asigancion de una zona de trabajo");
    }

    /**
     * Obtiene las zonas de trabajo asignadas
     * @return array
     */
    function listarZonasTrabajo() {
        $query = $this->db->get('zonatrabajo')->result();
        $array = array();
//        $fecha = strftime(date("Y-m-d"));
        foreach ($query as $value) {
//            if (($fecha >= $value->fecha)) {
              $this->db->where('uso', 1);
                $this->db->where('idZona', $value->ZonaEstacionamiento_idZona);
                $query = $this->db->get('subcalle')->row();
                if ($query->uso == 1) {
                    $array2 = array(
                        "cont" => $this->mpersonal_operativo->obtener_nombre_controlador($value->Controlador_idControlador), //almacena el nombre del controlador
                        "zona" => $this->mzona->zona($value->ZonaEstacionamiento_idZona), //almacena el nombre de la zona
                        "inicio" => $value->horarioInicio,
                        "fin" => $value->horarioFin,
                        "receso1" => $value->recesoInicio,
                        "receso2" => $value->recesoFin,
                        "habilitado" => $value->habilitado,
                        "idZonaTrabajo" => $value->idZonaTrabajo
                    );
                    array_push($array, $array2);
                }
//            }
        }
        return $array;
    }

    /**
     * Obtien el estado (habilitado o inhabilitado) d una zona de trabajo
     * @param type $idZonaTrabajo es el id de la zona de trabajo
     * @return type boolean
     */
    function obtener_estado($idZonaTrabajo) {
        $this->db->where('idZonaTrabajo', $idZonaTrabajo);
        $zonatrabajo = $this->db->get('zonatrabajo')->row();
        return $zonatrabajo->habilitado;
    }

    /**
     * Habilita o inhabilita una zona de trabajo
     */
    function habilitar_deshabilitar() {
        foreach ($_POST['habilitado'] as $id) {
            $estado = $this->obtener_estado($id);
            if ($estado == 1) {
                $estado = 0;
            } else {
                if ($estado == 0) {
                    $estado = 1;
                }
            }
            $data = array(
                'habilitado' => $estado
            );
            $this->db->where('idZonaTrabajo', $id);
            $this->db->update('zonatrabajo', $data);
            if ($estado == 0) {
                $this->mhistorico->guardar_acceso($id, "Deshabilitación de una asignación de zona");
            } else {
                $this->mhistorico->guardar_acceso($id, "Habilitación de una asignación de zona");
            }
        }
    }

    /**
     * Elimina las asignaciones de las zonas de trabajo
     */
    function vaciar_zonas_trabajo() {
        $query = $this->db->get('zonatrabajo')->result();
        foreach ($query as $value) {
            $this->db->delete('zonatrabajo', array('idZonaTrabajo' => $value->idZonaTrabajo));
            $this->mhistorico->guardar_acceso(0, "Asignación de nuevas zonas de trabajo");
        }
    }

    /**
     * Valida que la asignación no se duplique
     * @param type $zona es la zona de trabajo
     * @param type $controlador es el nombre de usuario del controlador
     * @param type $inicio es la horario de inicio
     * @param type $fin es el horario de finalización
     * @return boolean
     */
    function validar_asignacion($zona, $controlador, $inicio, $fin) {
        $idzona = $this->mzona->indice($zona);
        $idcontrolador = $this->mpersonal_operativo->obtener_idControlador($controlador);
        $this->db->where('habilitado', 1);
        $this->db->where('ZonaEstacionamiento_idZona', $idzona);
        $this->db->where('Controlador_idControlador', $idcontrolador);
        $this->db->where('horarioInicio', $inicio);
        $this->db->where('horarioFin', $fin);
        $query = $this->db->get('zonatrabajo')->num_rows();
        
        $idzona1 = $this->mzona->indice($zona);
//        $idcontrolador1 = $this->mpersonal_operativo->obtener_idControlador($controlador);
        $this->db->where('habilitado', 1);
        $this->db->where('ZonaEstacionamiento_idZona', $idzona1);
//        $this->db->where('Controlador_idControlador', $idcontrolador1);
        $this->db->where('horarioInicio', $inicio);
        $this->db->where('horarioFin', $fin);
        $query2 = $this->db->get('zonatrabajo')->num_rows();
        if ($query == 0&&$query2==0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * Valida que la asignación no se duplique
     * @param type $zona es la zona de trabajo
     * @param type $controlador es el nombre de usuario del controlador
     * @param type $inicio es la horario de inicio
     * @param type $fin es el horario de finalización
     * @return boolean
     */
    function validar_repetidas($zona, $controlador, $inicio, $fin) {
        $idzona = $this->mzona->indice($zona);
        $idcontrolador = $this->mpersonal_operativo->obtener_idControlador($controlador);
        $this->db->where('habilitado', 0);
        $this->db->where('ZonaEstacionamiento_idZona', $idzona);
        $this->db->where('Controlador_idControlador', $idcontrolador);
        $this->db->where('horarioInicio', $inicio);
        $this->db->where('horarioFin', $fin);
        $query = $this->db->get('zonatrabajo')->num_rows();
        if ($query == 0) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * Valida que no se asignen más de cuatro zoanas a un controlador
     * @param type $controlador es el noombre de usuario del controlador
     * @return boolean
     */
    function validar_maximo($controlador) {
        $idcontrolador = $this->mpersonal_operativo->obtener_idControlador($controlador);
        $this->db->where('habilitado', 1);
        $this->db->where('Controlador_idControlador', $idcontrolador);
        $query = $this->db->get('zonatrabajo')->num_rows();
        if ($query >= 4) {
            return FALSE;
        } else {
            return TRUE;
        }
    }

}

?>
